﻿using System;

namespace Soleil.Domain.Core.DomainObjects
{
    /// <summary>
    /// interface to define some auditing features to an entity
    /// </summary>
    /// <typeparam name="TKey">The type of the key.</typeparam>
    public interface IAuditableEntity<TKey> : IKeyedEntity<TKey>
    {
        /// <summary>
        /// Creation data.
        /// </summary>
        DateTime CreateDate { get; set; }


        /// <summary>
        /// User who first created this entity.
        /// </summary>
        string CreateUser { get; set; }


        /// <summary>
        /// Date the entity was updated.
        /// </summary>
        DateTime UpdateDate { get; set; }


        /// <summary>
        /// User who last updated the entity.
        /// </summary>
        string UpdateUser { get; set; }


        /// <summary>
        /// Comment used for updates.
        /// </summary>
        string UpdateComment { get; set; }
    }
}
